home *** CD-ROM | disk | FTP | other *** search
- package ms.applet;
-
- import java.applet.Applet;
- import java.applet.AppletContext;
- import java.applet.AudioClip;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Event;
- import java.awt.Frame;
- import java.awt.Image;
- import java.awt.Toolkit;
- import java.awt.Window;
- import java.io.File;
- import java.io.InputStream;
- import java.io.PrintStream;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
- import java.util.Vector;
- import sun.awt.image.FileImageSource;
- import sun.awt.image.URLImageSource;
-
- public class AppletViewer extends Frame implements AppletContext {
- int mMSApplet16;
- int mCallbackQueue;
- AppletThreadGroup mAppletThreadGroup;
- public static String theVersion = "1.0.2";
- AppletViewerPanel panel;
- PrintStream statusMsgStream;
- Vector mWindows;
- String mImageCacheFilename;
- static Hashtable audioHash = new Hashtable();
- static Hashtable imgHash = new Hashtable();
- static Vector appletPanels = new Vector();
- private boolean mClosing;
-
- public static void main(String[] var0) {
- String var1 = null;
-
- for(int var2 = 0; var2 < var0.length - 1; var2 += 2) {
- if (var0[var2].equals("CODE")) {
- var1 = var0[var2 + 1];
- break;
- }
- }
-
- if (var1 != null) {
- AppletViewer var3 = new AppletViewer(var1);
- var3.execute(var0);
- }
- }
-
- public AppletViewer(String var1) {
- this.statusMsgStream = System.out;
- this.mAppletThreadGroup = new AppletThreadGroup(var1, this);
- this.initCallbackQueue();
- ((Component)this).setBackground(new Color(192, 192, 192));
- }
-
- protected void finalize() throws Throwable {
- this.uninitCallbackQueue();
- super.finalize();
- }
-
- public void execute(String[] var1) {
- Hashtable var2 = this.processArgs(var1);
- if (var2 != null) {
- initSystemProperties(var2);
- this.panel = new AppletViewerPanel(this, var2);
- ((Container)this).add("Center", this.panel);
- this.panel.init(this.mAppletThreadGroup);
- appletPanels.addElement(this.panel);
- ((Window)this).pack();
- this.show();
- this.showStatus(System.getProperty("appletloader.starting"));
- this.panel.sendEvent(1);
- this.panel.sendEvent(2);
- this.panel.sendEvent(3);
- }
- }
-
- static synchronized AudioClip getAudioClipFromCache(URL var0) {
- System.security.checkConnect(var0.host, var0.port);
- Object var1 = (AudioClip)audioHash.get(var0);
- if (var1 == null) {
- audioHash.put(var0, var1 = new AppletAudioClip(var0));
- }
-
- return (AudioClip)var1;
- }
-
- public AudioClip getAudioClip(URL var1) {
- return getAudioClipFromCache(var1);
- }
-
- private Image getImageFromFileCache(URL var1) {
- Image var2 = null;
- Object var3 = null;
-
- try {
- File var8 = this.getUrlCacheFile(var1);
- if (var8 == null) {
- throw new Exception("Cache filename is NULL");
- }
-
- if (this.mImageCacheFilename != null) {
- throw new Exception("Cache not null!!");
- }
-
- this.mImageCacheFilename = var8.getAbsolutePath();
- System.err.println("Loading Image from cache: " + this.mImageCacheFilename);
-
- try {
- imgHash.put(var1, var2 = Toolkit.getDefaultToolkit().createImage(new FileImageSource(this.mImageCacheFilename)));
- } catch (Exception var6) {
- this.mImageCacheFilename = null;
- }
-
- this.mImageCacheFilename = null;
- } catch (Exception var7) {
- this.mImageCacheFilename = null;
- System.err.println("Image Exception:" + var7 + " URL:" + var1 + " Cache:" + var3);
-
- try {
- imgHash.put(var1, var2 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var1)));
- } catch (Exception var5) {
- }
- }
-
- return var2;
- }
-
- synchronized Image getImageFromHash(URL var1) {
- System.err.println("Loading image: " + var1);
- System.security.checkConnect(var1.host, var1.port);
- Image var2 = (Image)imgHash.get(var1);
- if (var2 == null) {
- if (var1.protocol.equals("https")) {
- return this.getImageFromFileCache(var1);
- }
-
- try {
- URLConnection var3 = var1.handler.openConnection(var1);
- InputStream var4 = var3.getInputStream();
- if (var4 != null) {
- System.err.println("Loading Image from URL:" + var1);
- imgHash.put(var1, var2 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var1, var3)));
- }
- } catch (Exception var5) {
- return this.getImageFromFileCache(var1);
- }
- }
-
- return var2;
- }
-
- public Image getImage(URL var1) {
- return this.getImageFromHash(var1);
- }
-
- public Applet getApplet(String var1) {
- AppletSecurity var2 = (AppletSecurity)System.security;
- var1 = var1.toLowerCase();
- Enumeration var3 = appletPanels.elements();
-
- while(var3.hasMoreElements()) {
- AppletPanel var4 = (AppletPanel)var3.nextElement();
- String var5 = var4.getParameter("name");
- if (var5 != null) {
- var5 = var5.toLowerCase();
- }
-
- if (var1.equals(var5)) {
- URL var6 = var4.getDocumentBase();
- URL var7 = this.panel.getDocumentBase();
- if (var7 instanceof URL && (var6.sameFile(var7) || false)) {
- try {
- var6 = this.panel.getCodeBase();
- String var10001 = var6.host;
- var6 = var4.getCodeBase();
- var2.checkConnect(var10001, var6.host);
- return var4.applet;
- } catch (SecurityException var8) {
- }
- }
- }
- }
-
- return null;
- }
-
- public Enumeration getApplets() {
- AppletSecurity var1 = (AppletSecurity)System.security;
- Vector var2 = new Vector();
- Enumeration var3 = appletPanels.elements();
-
- while(var3.hasMoreElements()) {
- AppletPanel var4 = (AppletPanel)var3.nextElement();
- URL var5 = var4.getDocumentBase();
- URL var6 = this.panel.getDocumentBase();
- if (var6 instanceof URL && (var5.sameFile(var6) || false)) {
- try {
- var5 = this.panel.getCodeBase();
- String var10001 = var5.host;
- var5 = var4.getCodeBase();
- var1.checkConnect(var10001, var5.host);
- var2.addElement(var4.applet);
- } catch (SecurityException var7) {
- }
- }
- }
-
- return var2.elements();
- }
-
- public void showDocument(URL var1) {
- this.showDocument((URL)var1, (String)null);
- }
-
- public void showDocument(URL var1, String var2) {
- if (var1 != null) {
- if (var2 == null) {
- var2 = "_self";
- }
-
- this.showDocument(var1.handler.toExternalForm(var1), var2);
- }
- }
-
- private native void showDocument(String var1, String var2);
-
- public native void showStatus(String var1);
-
- void start() {
- this.panel.sendEvent(3);
- }
-
- void stop() {
- }
-
- public boolean closing() {
- return this.mClosing;
- }
-
- public synchronized void show() {
- if (!this.mClosing) {
- super.show();
- }
-
- }
-
- private native void terminateThreads(Thread[] var1);
-
- synchronized void appletClose() {
- try {
- this.mClosing = true;
- this.killAudioClips();
- Thread[] var1 = new Thread[this.mAppletThreadGroup.activeCount()];
- this.mAppletThreadGroup.enumerate(var1, true);
- this.terminateThreads(var1);
- this.mAppletThreadGroup.destroy();
- this.mAppletThreadGroup = null;
- ((Component)this).hide();
- ((Frame)this).dispose();
- this.killWindows();
- this.uninitCallbackQueue();
- appletPanels.removeElement(this.panel);
- this.panel = null;
- } catch (Throwable var2) {
- System.out.println("Throwable caught during applet termination: " + var2);
- }
- }
-
- protected void appletQuit() {
- Runtime.currentRuntime.exit(0);
- }
-
- public boolean handleEvent(Event var1) {
- switch (var1.id) {
- case 201:
- this.appletClose();
- return true;
- case 203:
- this.stop();
- return true;
- case 204:
- this.start();
- return true;
- case 503:
- case 504:
- case 505:
- case 506:
- return super.handleEvent(var1);
- case 51234:
- ((Component)this).resize(((Container)this).preferredSize());
- ((Container)this).validate();
- return true;
- default:
- return super.handleEvent(var1);
- }
- }
-
- public static int countApplets() {
- Vector var0 = appletPanels;
- return var0.elementCount;
- }
-
- public static void initSystemProperties(Hashtable var0) {
- if (System.security == null) {
- Properties var1 = new Properties(System.getProperties());
- ((Hashtable)var1).put("acl.read", "+");
- ((Hashtable)var1).put("acl.read.default", "");
- ((Hashtable)var1).put("acl.write", "+");
- ((Hashtable)var1).put("acl.write.default", "");
- ((Hashtable)var1).put("browser", "Microsoft Internet Explorer");
- ((Hashtable)var1).put("browser.version", "3.0");
- ((Hashtable)var1).put("browser.vendor", "Microsoft");
- ((Hashtable)var1).put("http.agent", "JDK/" + theVersion);
- String var2 = (String)var0.get("firewallSet");
- if (var2 != null) {
- ((Hashtable)var1).put("trustProxy", "true");
- ((Hashtable)var1).put("firewallSet", var2);
- if (var2.equals("true")) {
- ((Hashtable)var1).put("firewallHost", (String)var0.get("firewallHost"));
- ((Hashtable)var1).put("firewallPort", (String)var0.get("firewallPort"));
- }
- }
-
- ((Hashtable)var1).put("package.restrict.access.ms", "true");
- ((Hashtable)var1).put("package.restrict.definition.java", "true");
- ((Hashtable)var1).put("package.restrict.definition.sun", "true");
- ((Hashtable)var1).put("package.restrict.definition.ms", "true");
- ((Hashtable)var1).put("java.version.applet", "true");
- ((Hashtable)var1).put("java.version", "1.0.2");
- ((Hashtable)var1).put("java.vendor.applet", "true");
- ((Hashtable)var1).put("java.vendor", "Microsoft Corp.");
- ((Hashtable)var1).put("java.vendor.url.applet", "true");
- ((Hashtable)var1).put("java.vendor.url", "http://www.microsoft.com/");
- ((Hashtable)var1).put("java.class.version.applet", "true");
- ((Hashtable)var1).put("java.class.version", "45.3");
- ((Hashtable)var1).put("os.name.applet", "true");
- ((Hashtable)var1).put("os.name", "Windows");
- ((Hashtable)var1).put("os.version.applet", "true");
- ((Hashtable)var1).put("os.version", "3.1");
- ((Hashtable)var1).put("os.arch.applet", "true");
- ((Hashtable)var1).put("os.arch", "x86");
- ((Hashtable)var1).put("file.separator.applet", "true");
- ((Hashtable)var1).put("file.separator", "\\");
- ((Hashtable)var1).put("path.separator.applet", "true");
- ((Hashtable)var1).put("path.separator", ";");
- ((Hashtable)var1).put("line.separator.applet", "true");
- ((Hashtable)var1).put("line.separator", "\n");
- ((Hashtable)var1).put("browser.applet", "true");
- ((Hashtable)var1).put("browser", "MSIE 3.01");
- ((Hashtable)var1).put("appletloader.nocode", "APPLET tag missing CODE parameter.");
- ((Hashtable)var1).put("appletloader.notfound", "load: class %0 not found.");
- ((Hashtable)var1).put("appletloader.nocreate", "load: %0 can't be instantiated.");
- ((Hashtable)var1).put("appletloader.noconstruct", "load: %0 is not public or has no public constructor.");
- ((Hashtable)var1).put("appletloader.death", "killed");
- ((Hashtable)var1).put("appletloader.exception", "exception: %0.");
- ((Hashtable)var1).put("appletloader.exception2", "exception: %0: %1.");
- ((Hashtable)var1).put("appletloader.error", "error: %0.");
- ((Hashtable)var1).put("appletloader.error2", "error: %0: %1.");
- ((Hashtable)var1).put("appletloader.notloaded", "Init: applet not loaded.");
- ((Hashtable)var1).put("appletloader.notinited", "Start: applet not initialized.");
- ((Hashtable)var1).put("appletloader.notstarted", "Stop: applet not started.");
- ((Hashtable)var1).put("appletloader.notstopped", "Destroy: applet not stopped.");
- ((Hashtable)var1).put("appletloader.destroyed", "Applet destroyed.");
- ((Hashtable)var1).put("appletloader.notdestroyed", "Dispose: applet not destroyed.");
- ((Hashtable)var1).put("appletloader.disposed", "Applet disposed.");
- ((Hashtable)var1).put("appletloader.notdisposed", "Load: applet not disposed.");
- ((Hashtable)var1).put("appletloader.bail", "Interrupted: bailing out.");
- ((Hashtable)var1).put("appletloader.filenotfound", "File not found when looking for: %0");
- ((Hashtable)var1).put("appletloader.fileformat", "File format exception when loading: %0");
- ((Hashtable)var1).put("appletloader.fileioexception", "I/O exception when loading: %0");
- ((Hashtable)var1).put("appletloader.fileexception", "%0 exception when loading: %1");
- ((Hashtable)var1).put("appletloader.filedeath", "%0 killed when loading: %1");
- ((Hashtable)var1).put("appletloader.fileerror", "%0 error when loading: %1");
- if (System.security != null) {
- System.security.checkPropertiesAccess();
- }
-
- System.props = var1;
- if (System.security == null) {
- try {
- AppletSecurity var3 = new AppletSecurity();
- if (System.security != null) {
- throw new SecurityException("SecurityManager already set");
- } else {
- System.security = var3;
- }
- } catch (SecurityException var4) {
- }
- }
- }
- }
-
- Hashtable processArgs(String[] var1) {
- if ((var1.length & 1) != 0) {
- return null;
- } else {
- Hashtable var2 = new Hashtable();
-
- for(int var3 = 0; var3 < var1.length; var3 += 2) {
- var2.put(var1[var3].toLowerCase(), var1[var3 + 1]);
- }
-
- String var4 = (String)var2.get("codebase");
- String var5 = var4.toLowerCase();
- if (!var5.startsWith(".zip", var5.count - ".zip".count) && !var4.startsWith("/", var4.count - "/".count)) {
- var4 = var4 + "/";
- var2.put("codebase", var4);
- }
-
- var5 = (String)var2.get("proxyhttp");
- String var6 = null;
- String var7 = null;
- if (var5 != null) {
- try {
- var5 = var5.substring(7, var5.count - 1);
- int var8 = var5.indexOf(58, 0);
- var6 = var5.substring(0, var8);
- int var9 = var8 + 1;
- var7 = var5.substring(var9, var5.count);
- } catch (StringIndexOutOfBoundsException var10) {
- var5 = null;
- }
-
- if (var5 != null) {
- var2.put("firewallSet", "true");
- var2.put("firewallHost", var6);
- var2.put("firewallPort", var7);
- }
- }
-
- return var2;
- }
- }
-
- public File getUrlCacheFile(URL var1) {
- return this.getUrlCacheFile(var1.handler.toExternalForm(var1));
- }
-
- public File getUrlCacheFile(String var1) {
- return new File(this.getUrlCacheFileName(var1));
- }
-
- private native String getUrlCacheFileName(String var1);
-
- public int getCallbackQueue() {
- return this.mCallbackQueue;
- }
-
- private native void initCallbackQueue();
-
- private native void uninitCallbackQueue();
-
- public void registerWindow(Window var1) {
- if (var1 != null) {
- if (this.mWindows == null) {
- this.mWindows = new Vector();
- } else {
- Vector var2 = this.mWindows;
- if (var2.indexOf(var1, 0) >= 0 || false) {
- return;
- }
- }
-
- this.mWindows.addElement(var1);
- }
- }
-
- private void killWindows() {
- if (this.mWindows != null) {
- Vector var1 = this.mWindows;
- int var4 = var1.elementCount;
-
- for(int var2 = 0; var2 < var4; ++var2) {
- Window var3 = (Window)this.mWindows.elementAt(var2);
- ((Component)var3).hide();
- var3.dispose();
- }
-
- this.mWindows.removeAllElements();
- this.mWindows = null;
- }
- }
-
- private void killAudioClips() {
- Enumeration var1 = audioHash.elements();
-
- while(var1.hasMoreElements()) {
- AudioClip var2 = (AudioClip)var1.nextElement();
- var2.stop();
- }
-
- audioHash.clear();
- }
-
- private static native AppletViewer getAppletViewerBySystemThread();
-
- public static AppletViewer getAppletViewer() {
- Thread var0 = Thread.currentThread();
-
- for(ThreadGroup var1 = var0.group; var1 != null; var1 = var1.parent) {
- if (var1 instanceof AppletThreadGroup) {
- return ((AppletThreadGroup)var1).getAppletViewer();
- }
- }
-
- return getAppletViewerBySystemThread();
- }
- }
-